"""
Case Type   : datakit安全中心
Case Name   : 管理员创建新角色
Create At   : 2025/2/7
Owner       : @sungang14
Description :
    1. 点击安全中心-角色菜单 2. 点击“修改” 3. 在备注里输入一段超过1000字符的富文本 4. 点击确定【结果1】
Expect      :
    【结果1】输入200个字符后无法继续输入
History     :
"""

import os
import unittest
from yat.test import Node
from yat.test import macro
from testcase.utils.CommonSH import CommonSH
from testcase.utils.Logger import Logger
from testcase.utils.datakit_api.Api import Api


class Tools(unittest.TestCase):
    def setUp(self):
        self.log = Logger()
        self.log.info(f"-----{os.path.basename(__file__)} start-----")
        self.com_sh = CommonSH()
        self.token = self.com_sh.get_token_value(macro.DATAKIT_PASSWD)
        self.assertNotEqual("error", self.token)
        self.sys_api = Api(self.token)
        self.role_name = 'sgtest_case0020'
        self.remark_01 = \
            f"zhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglixuntaqianbaiduzhonglix200chaoguole"
        self.remark_02 = self.remark_01[0:200]
        self.data_role = f"pageNum=1&pageSize=10&roleName=" + self.role_name

        text = '----查询待添加角色是否存在，存在则删除----'
        self.log.info(text)
        res1 = self.sys_api.query_role_list(self.data_role)
        self.log.info(res1.json())
        self.num_role = res1.json()['total']
        self.log.info(self.num_role)
        if self.num_role != 0:
            self.role_id = res1.json()['rows'][0]['roleId']
            res7 = self.sys_api.delete_role([self.role_id])
            self.log.info(res7.json())
            self.assertEqual(200, res7.json()['code'], '删除角色失败')
            self.assertEqual("success", res7.json()['msg'], '删除用户失败')

        text = '----安全中心-角色与权限菜单，点击“添加角色”，备注长度200字节，点击确定 expect:成功----'
        self.log.info(text)
        self.data1 = {"menuIds": [],
                      "roleName": self.role_name,
                      "status": f"0",
                      "remark": self.remark_02}
        res1 = self.sys_api.add_role(self.data1)
        self.log.info(res1.json())
        self.assertEqual(200, res1.json()['code'], '添加角色失败')
        self.assertEqual("success", res1.json()['msg'], '添加角色失败')

        text = '----查询添加角色id expect:查询成功----'
        self.log.info(text)
        res2 = self.sys_api.query_role_list(self.data_role)
        self.log.info(res2.json())
        self.assertEqual(1, res2.json()['total'], '添加角色失败')
        self.role_id = res2.json()['rows'][0]['roleId']
        self.log.info(self.role_id)

    def test_batch_installation(self):
        text = '----step1:安全中心-角色与权限菜单，确定对应角色点击“修改”操作，修改角色备注，备注信息长度超过200字节 expect:修改成功----'
        self.log.info(text)
        self.data3 = {"roleId": int(self.role_id),
                      "menuIds": [6, 605],
                      "roleName": self.role_name,
                      "status": f"0",
                      "remark": self.remark_01}
        res3 = self.sys_api.update_role(self.data3)
        self.log.info(res3.json())
        self.assertEqual(50119, res3.json()['code'], '修改备注成功')
        self.assertEqual("Role remark length cannot exceed 200 characters", res3.json()['msg'], '修改备注成功')

    def tearDown(self):
        text = '----:删除角色 expect：删除成功----'
        self.log.info(text)
        self.data5 = [self.role_id]
        res5 = self.sys_api.delete_role(self.data5)
        self.log.info(res5.json())
        self.assertEqual(200, res5.json()['code'], '删除角色失败')
        self.assertEqual("success", res5.json()['msg'], '删除用户失败')
        self.log.info(f"-----{os.path.basename(__file__)} finsh-----")
